package com.sport.utils;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5加密工具类
 * MD5加密是单向不可逆的，无法被解密
 * BCyptPasswordEncoder是双向加密的，可逆的，课解密
 */

@Slf4j
public class MD5Utils {


    public static String md5(String password){
        if(StringUtils.isNotEmpty(password)){
        byte[] bytes=null ;
        try {
            bytes= MessageDigest.getInstance("md5").digest(password.getBytes());
        }catch (NoSuchAlgorithmException e){
        log.error("没有MD5这个加密算法");
        }
//        由MD5加密算法得到的字节数组转换为16进制的数字
       StringBuilder code= new StringBuilder(new BigInteger(1,bytes).toString(16));
//        保证MD5加密后是32位
            for(int i=0;i<32-code.length();i++){
                code.insert(0,"0");
            }
            return code.toString();
    }
        else{
            return null;
        }
    }

    public static void main(String[] args) {
        System.out.println(md5("123456"));


    }
}
